import 'package:blue_classic_plus/BluetoothDevice.dart';
import 'package:plugin_platform_interface/plugin_platform_interface.dart';

import 'blue_classic_plus_method_channel.dart';

abstract class BlueClassicPlusPlatform extends PlatformInterface {
  /// Constructs a BlueClassicPlusPlatform.
  BlueClassicPlusPlatform() : super(token: _token);

  static final Object _token = Object();

  static BlueClassicPlusPlatform _instance = MethodChannelBlueClassicPlus();

  /// The default instance of [BlueClassicPlusPlatform] to use.
  ///
  /// Defaults to [MethodChannelBlueClassicPlus].
  static BlueClassicPlusPlatform get instance => _instance;

  /// Platform-specific implementations should set this with their own
  /// platform-specific class that extends [BlueClassicPlusPlatform] when
  /// they register themselves.
  static set instance(BlueClassicPlusPlatform instance) {
    PlatformInterface.verifyToken(instance, _token);
    _instance = instance;
  }

  Future<String?> getPlatformVersion() {
    throw UnimplementedError('platformVersion() has not been implemented.');
  }

  Future<bool> bluetoothIsSupport() {
    throw UnimplementedError('bluetoothIsSupport() has not been implemented.');
  }

  Future<bool> bluetoothIsEnabled() {
    throw UnimplementedError('bluetoothIsEnabled() has not been implemented.');
  }

  Future<bool> bluetoothPermission() {
    throw UnimplementedError('bluetoothPermission() has not been implemented.');
  }

  Future<bool> bluetoothEnableEetectability() {
    throw UnimplementedError('bluetoothEnableEetectability() has not been implemented.');
  }

  Future<List<Object?>> bluetoothBondedDevices() {
    throw UnimplementedError('bluetoothBondedDevices() has not been implemented.');
  }

  Future<bool> bluetoothStartDiscovery({required String uuid, required String name}) {
    throw UnimplementedError('bluetoothStartDiscovery() has not been implemented.');
  }

  Future<void> bluetoothEndDiscovery() {
    throw UnimplementedError('bluetoothEndDiscovery() has not been implemented.');
  }

  Future<bool> bluetoothStartServer({required String uuid, required String name}) {
    throw UnimplementedError('bluetoothStartServer() has not been implemented.');
  }

  Future<bool> bluetoothStopServer({String? uuid, String? name}) {
    throw UnimplementedError('bluetoothStopServer() has not been implemented.');
  }

  Future<bool> bluetoothStartClient({required String uuid, required BluetoothDevice device}) {
    throw UnimplementedError('bluetoothStartClient() has not been implemented.');
  }

  Future<bool> bluetoothStopClient({required String uuid, required String device}) {
    throw UnimplementedError('bluetoothStopClient() has not been implemented.');
  }

  Future<bool> bluetoothServerBroadcastMsg({required String msg}) {
    throw UnimplementedError('bluetoothServerBroadcastMsg() has not been implemented.');
  }

  Future<bool> bluetoothClientSendMsg({required String msg}) {
    throw UnimplementedError('bluetoothClientSendMsg() has not been implemented.');
  }

}
